Java Swingworker 和多线程
全部标签 在我的机器上启动一个JVM实例时,一个简单的类在main()中运行无限sleep,我在JVM中看到四个关键线程(除了主线程):附加监听器引用处理程序终结器信号调度器销毁JavaVM我很想了解每个核心JVM线程的用途。通过快速的互联网搜索,我发现了这些线程的以下详细信息:AttachListener:动态附加有一个附加监听器线程目标JVM。这是一个线程,当第一个发生附加请求。SignalDispatcher:当操作系统向JVM发出信号时,信号调度线程将信号传递给适当的处理程序。ReferenceHandler:高优先级线程入队挂起引用。GC创建一个简单的引用链接列表需要处理,这个线程快速
我正在运行一个高度并发的Java程序。当许多线程向执行程序服务提交任务时,主线程会在某个时刻调用ExecutorService.shutdownNow()。执行此操作后,我希望:执行者服务不会接受额外的任务执行者服务的队列清晰其余运行的worker被中断,也就是说,如果他们正确管理InterruptedException和/或显式检查Thread.currentThread().isInterrupted()由于我处于以下情况:执行程序服务由于ExecutorService.shutdownNow()而“关闭”,但并未关闭,即ExecutorService.awaitTerminati
引用:http://www.pixeldonor.com/2013/oct/12/concurrent-zip-compression-java-nio/我正在尝试解压5GB的压缩文件,平均需要大约30分钟,这对我们的应用程序来说很长,我正在努力减少时间。我尝试了很多组合,更改了缓冲区大小(默认情况下我的写入block为4096字节),更改了NIO方法、库,所有结果都非常相同。仍然没有尝试的一件事是将压缩文件按block拆分,因此通过多线程block读取它。代码片段是:privatestaticExecutorServicee=Executors.newFixedThreadPool(
在引入Java内存模型之后,Swing准则被更改为声明任何Swing组件都需要在EDT上实例化,以避免出现未发布的实例状态。我在任何地方都找不到的是,类加载是否也必须在EDT上进行,或者我们可以在后台线程中预加载关键的Swing类吗?Sun/Oracle对此有任何官方声明吗?是否有任何已知的类保持非线程安全静态状态,因此需要在EDT上加载?解决Nemi问题的说明:这是一个实际问题。我们应用程序启动时间的很大一部分花在了EDT上的类加载和字体/图像加载上。其中大部分可以归因于Swing和相关库。这是一些背景:与许多其他Swing应用程序一样,在启动时我们会预先构建许多表单,以使UI更具响
有大量的任务。每个任务都属于一个组。要求是每组任务应该像在单线程中执行一样串行执行,并且吞吐量应该在多核(或多cpu)环境中最大化。注:还有海量组,与任务数量成正比。天真的解决方案是使用ThreadPoolExecutor和同步(或锁定)。但是,线程会相互阻塞,吞吐量不会最大化。有更好的主意吗?或者有没有第三方库可以满足要求? 最佳答案 一种简单的方法是将所有组任务“串联”为一个super任务,从而使子任务连续运行。但这可能会导致其他组延迟,除非其他组完全完成并在线程池中腾出一些空间,否则这些组不会启动。作为替代方案,请考虑将一组任
我有一个基本的Java服务器应用程序,它有100个工作线程,可以对URL执行简单的HEAD请求。我为此使用HttpClient4.x。运行几分钟后,我的程序就卡住了几分钟,我不明白为什么。查看visualvmmonitor报告的屏幕截图。你可以看到它是扁平的。在此期间,我无法获得良好的线程转储,而可视化虚拟机只是卡住,直到它被解锁。有没有人知道我可以做些什么来尝试开始调试这个人?可视化虚拟机:http://tinypic.com/view.php?pic=2i915bs&s=7这是我在卡住时尝试获取jstack转储时的输出:jstack-F4325AttachingtoprocessI
我有一个大项目,也使用了很多库。使用jstack我发现有这样的线程:Timer-2,Timer-3,Timer-4....我能显示的jstack是:java.lang.Thread.State:TIMED_WAITING(onobjectmonitor)atjava.lang.Object.wait(NativeMethod)atjava.util.TimerThread.mainLoop(UnknownSource)-locked(ajava.util.TaskQueue)atjava.util.TimerThread.run(UnknownSource)是否可以找到创建这些线程的类
Java中的FileLock在同一进程内或不同进程之间或两者之间的多个线程之间是否安全?javadoc说:FilelocksareheldonbehalfoftheentireJavavirtualmachine.Theyarenotsuitableforcontrollingaccesstoafilebymultiplethreadswithinthesamevirtualmachine.File-lockobjectsaresafeforusebymultipleconcurrentthreads.我不太明白:这是否意味着FileLock在同一个进程内的多个线程、多个不同进程之间或
我正在尝试让一个关闭钩子(Hook)在我的ubuntu服务器上工作,但是我似乎遇到了不止一个线程的问题。使用基本的ShutdownHook,当我使用kill终止进程时,以下代码确实有效,表示关闭行为已激活。publicstaticvoidmain(String[]args){ShutdownHookshutDown=newShutdownHook();shutDown.attachShutDownHook();while(true){}}然而,具有附加线程的相同代码不会publicstaticvoidmain(String[]args){ShutdownHookshutDown=new
我想编写一个简单的线程安全类,可用于设置或获取整数值。最简单的方法是使用synchronized关键字:publicclassMyIntegerHolder{privateIntegervalue;synchronizedpublicIntegergetValue(){returnvalue;}synchronizedpublicvoidsetValue(Integervalue){this.value=value;}}我也可以尝试使用volatile:publicclassMyIntegerHolder{privatevolatileIntegervalue;publicIntege